#include <iostream>
#include <thread>
#include <future>

void Add(int x, int y, std::promise<int> &pro)
{
    std::this_thread::sleep_for(std::chrono::seconds(1));
    pro.set_value(x + y);
}

int main()
{
    std::promise<int> prom;

    std::future<int> fu = prom.get_future();

    // int sum; 不能将&sum传递给th线程（与promise效果是不一样的），因为没有同步机制
    std::thread th(Add, 11, 22, std::ref(prom));

    int sum = fu.get();// get函数会阻塞，直至异步完成返回结果才返回
    std::cout << sum << std::endl;

    th.join();
    return 0;
}